The generation of random numbers is typically an important function in many different applications, such as data encryption and computer simulation. Conventional devices that attempt to generate random numbers often use an entropy generator derived from a natural process, followed by a “whitener” that improves the apparent randomness and the output rate of the generated numbers.
Entropy generators often use complex sensors to measure physical processes like radioactive decay, shot noise, thermal noise, avalanche noise, or radio noise. Unfortunately, entropy generators like this typically occupy a relatively large amount of space and generate random numbers at a very low rate. This often makes them unsuitable for use in applications that require the generation of high-quality truly random numbers at a high rate within a limited physical space. Moreover, entropy generators like this are often exposed, meaning they are subject to external monitoring. Some applications (such as cryptographic applications) may require physical security of the devices generating random numbers, which typically prohibits the use of these types of entropy generators.
Whiteners typically use hash functions, linear hybrid cellular automatons, or pseudo-random number sequencers to increase the number generation rate and to increase the appearance of randomness in the generated numbers. However, even with the use of whiteners, it cannot be guaranteed that generated numbers are truly random and lack an inherent pattern.